package com.link.base.tencent.corpwx.usertag.service;

import com.link.base.tencent.corpwx.usertag.model.UserTag;
import com.link.base.tencent.corpwx.usertag.model.UserTagItem;
import com.link.core.basic.service.BasicService;

import java.util.List;

/**
 * 成员标签-成员 
 *
 * @author 欧阳振强
 * @date 2020-01-06 10:53:25.0
 */
public interface  UserTagItemService extends BasicService<UserTagItem> {
    /**
     * 比较企业微信标签下成员和CRM端标签下成员，拼接出一个需要新增、删除的标签成员列表
     *
     * @author 欧阳振强
     * @date 2020/01/06
     * @param tagUserList 企业微信端拉取的标签成员列表
     * @param userTagItemList CRM端拉取的标签成员列表对象
     */
    List<UserTagItem> opUserTagItemList(List<String> tagUserList, List<UserTagItem> userTagItemList) throws Exception;

    /**
     * 根据标签的记录Id获取其下成员列表
     *
     * @author 欧阳振强
     * @date 2020/01/06
     * @param userTag 标签对象
     */
    List<UserTagItem> getUserTagItemListByTag(UserTag userTag) throws Exception;

    /**
     * 通过CRM标签记录ID删除标签成员
     *
     * @author 欧阳振强
     * @date 2020/01/06
     * @param userTag 标签对象
     */
    void delUserTagByHeadId(UserTag userTag) throws Exception;

    /**
     * 删除标签成员
     *
     * @author 欧阳振强
     * @date 2020/01/06
     * @param userTagItem 标签成员
     */
    void delTagUser(UserTagItem userTagItem) throws Exception;

    /**
     * 同步标签成员到企业微信
     *
     * @author 欧阳振强
     * @date 2020/01/06
     * @param userTagItem 标签成员
     */
    void syncTagUserToWx(UserTagItem userTagItem) throws Exception;

    /**
     * 选择标签成员
     *
     * @author 欧阳振强
     * @date 2020/01/05
     * @param userTagItem 标签成员
     */
    List<UserTagItem> queryUnSelectUserListPage(UserTagItem userTagItem) throws Exception;
}